/**
 * Copyright (C) 2013 DaiKit.com - daikit4gxt module (admin@daikit.com)
 *
 *         Project home : http://code.daikit.com/daikit4gxt
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.daikit.daikit4gxt.client.ui.grid;

import java.util.Comparator;

import com.daikit.commons.shared.bean.AbstractDkBeanWithId;
import com.daikit.daikit4gxt.client.ui.cell.MyAsSimpleStringCell;
import com.daikit.daikit4gxt.client.ui.comparator.DkAsSimpleStringComparator;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.sencha.gxt.core.client.ValueProvider;
import com.sencha.gxt.widget.core.client.grid.ColumnConfig;


/**
 * Particular extension of {@link ColumnConfig} adding a cell renderer and a local {@link Comparator} for sorting
 * 
 * @author tcaselli
 * @version $Revision$ Last modifier: $Author$ Last commit: $Date$
 * @param <BEAN_TYPE>
 *           the bean type
 * @param <COLUMN_TYPE>
 *           the column type extending {@link AbstractDkBeanWithId}
 */
public class MyAsSimpleStringColumnConfig<BEAN_TYPE, COLUMN_TYPE extends AbstractDkBeanWithId> extends
		ColumnConfig<BEAN_TYPE, COLUMN_TYPE>
{

	/**
	 * Constructor wrapper
	 * 
	 * @param valueProvider
	 */
	public MyAsSimpleStringColumnConfig(final ValueProvider<? super BEAN_TYPE, COLUMN_TYPE> valueProvider)
	{
		super(valueProvider);
		initialize();
	}

	/**
	 * Constructor wrapper
	 * 
	 * @param valueProvider
	 * @param width
	 */
	public MyAsSimpleStringColumnConfig(final ValueProvider<? super BEAN_TYPE, COLUMN_TYPE> valueProvider, final int width)
	{
		super(valueProvider, width);
		initialize();
	}

	/**
	 * Constructor wrapper
	 * 
	 * @param valueProvider
	 * @param width
	 * @param header
	 */
	public MyAsSimpleStringColumnConfig(final ValueProvider<? super BEAN_TYPE, COLUMN_TYPE> valueProvider, final int width,
			final SafeHtml header)
	{
		super(valueProvider, width, header);
		initialize();
	}

	/**
	 * Constructor wrapper
	 * 
	 * @param valueProvider
	 * @param width
	 * @param header
	 */
	public MyAsSimpleStringColumnConfig(final ValueProvider<? super BEAN_TYPE, COLUMN_TYPE> valueProvider, final int width,
			final String header)
	{
		super(valueProvider, width, header);
		initialize();
	}

	/**
	 * Initialize cell and comparator
	 */
	protected void initialize()
	{
		setCell(new MyAsSimpleStringCell<COLUMN_TYPE>());
		setComparator(new DkAsSimpleStringComparator<COLUMN_TYPE>());
	}

}
